package com.tlgen.orm.utils;

/**
 * 字符串截取工具类
 */
public class StringUtils {

    /**
     * 根据全类名获取类名
     * @param str
     * @return
     */
    public static String subLastName(String str) {
        return str.split("\\.")[str.split("\\.").length - 1];
    }


    /**
     * 获取第一次出现的双引号中之间的内容
     * @param str
     * @return
     */
    public static String subDoubleQuotation(String str) {
        return str.substring(str.indexOf("\"") + 1, str.lastIndexOf("\""));
    }

    /**
     * 先截取 values 之后的字符串, 再获取出现左括号和逗号之间的内容
     * @param str
     * @return
     */
    public static String subOpenAndComma(String str) {
        String substring = str.substring(str.lastIndexOf(" ( ") + 2);
        String trim = substring.substring(0, substring.indexOf(",")).trim();
        return subDoubleQuotation(trim);
    }

    /**
     * 将类名转表名, 如 MyTestName ===> my_test_name
     *
     * @param tClass
     * @return
     */
    public static String classNameToTableName(Class<?> tClass) {
        String className = tClass.getName();
        String str = className.substring(className.lastIndexOf(".") + 1);
        StringBuilder ret = new StringBuilder();
        for (int i = 0; i < str.length(); i++) {
            char x = str.charAt(i);
            if (Character.isUpperCase(x)) {
                ret.append("_").append(Character.toLowerCase(x));
            } else {
                ret.append(x);
            }
        }
        return ret.substring(1);
    }

    /**
     * 将大写转小写和下划线, 如 MyTestName ===> my_test_name
     *
     * @param s
     * @return
     */
    public static String uncapUnderline(String s) {
        StringBuilder ret = new StringBuilder();
        for (int i = 0; i < s.length(); i++) {
            char x = s.charAt(i);
            if (Character.isUpperCase(x)) {
                ret.append("_").append(Character.toLowerCase(x));
            } else {
                ret.append(x);
            }
        }
        return Character.isUpperCase(s.charAt(0)) ? ret.substring(1) : ret.toString();
    }

    public static String cap(String s) {
        return s.substring(0, 1).toUpperCase().concat(s.substring(1));
    }

    public static String uncap(String s) {
        return s.substring(0, 1).toLowerCase().concat(s.substring(1));
    }

    /**
     * 获取简单类名, 如 com.tlgen.spring.service.SysUserService 获取到 SysUserService
     *
     * @param className
     * @return
     */
    public static String getSimpleClassName(String className) {
        return className.substring(className.lastIndexOf(".") + 1);
    }

}
